Don't abort on untranslatable errors: EINVAL and print warning
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Tue, 2 Aug 2005 17:59:20 +0000 (17:59 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Tue, 2 Aug 2005 17:59:20 +0000 (17:59 +0000)
Signed-off-by: Rusty Russel <rusty@rustcorp.com.au>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
tools/xenstore/xenstored_core.c

index e257853cb2b8bc94474bf272fbaa36bacbdd6e97..ad35ed2f89fc4bd0fc0d6cdf1bbbd9eb675b0141 100644 (file)
@@ -504,11 +504,13 @@ void send_error(struct connection *conn, int error)
 {
        unsigned int i;
 
-       for (i = 0; error != xsd_errors[i].errnum; i++)
-               if (i == ARRAY_SIZE(xsd_errors) - 1)
-                       corrupt(conn, "Unknown error %i (%s)", error,
-                               strerror(error));
-
+       for (i = 0; error != xsd_errors[i].errnum; i++) {
+               if (i == ARRAY_SIZE(xsd_errors) - 1) {
+                       eprintf("xenstored: error %i untranslatable", error);
+                       i = 0;  /* EINVAL */
+                       break;
+               }
+       }
        send_reply(conn, XS_ERROR, xsd_errors[i].errstring,
                          strlen(xsd_errors[i].errstring) + 1);
 }